# -*- coding:utf-8 -*-

# @Time    : 2023/6/27 17:05
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : determine_solution.py
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# from agent.llm_agent import LLMAgent
from bot.insurance_sales.agent.llm_agent import LLMAgent

default_template = """
    作为一个专业的{role}，场景是在电话通话中，你需要根据用户的问题和对话记录，构建出最合适的解决方案。
    注意以下事项：
    1.解决方案的内容是接下来和用户沟通的方案，解决方案需要限定在备选回复话术中，引导操作的时候每次只给一个方案，不要一次性给出多个方案，尽量是回复话术原文，不要无中生有；
    2.回复的内容将用于生成具体回复用户的话术，不要包含不必要的信息；
    3.回复的内容只用于下一轮和用户沟通的话术生成，也不要列出具体详细的步骤，也不用枚举各种用户问题或解决方案的情况，只需要给出最后解决方案的结论；
    4.如果当前用户无问题，则输出"无需解决方案"，不要无中生有。
    5.你的职责是收集用户信息、介绍养老社区相关内容、解答用户的疑惑、针对用户负面的认知进行一定的劝说。不要承诺职责以外的事，如：你不能做参观的具体行程安排；你不能提供导航地址；你不能发送邮件；用户退休以前不能入住，不能邀约60岁以下的用户立即入住；不能加微信；不能和用户约定具体的参观时间。
    6.对于你无法确定的问题，可以告知用户将由养老顾问来详细解答并安排行程，不要自己发挥。
    7.如果用户有连续两轮拒绝、强烈拒绝（连续三次拒绝可认为是强烈拒绝，如："不需要不需要不需要"）、抱怨、不高兴、激动、不耐烦等情绪时，向用户回复结束语："好的，那先不打扰您了，祝您生活愉快，再见"；如果用户有投诉、骂人、说脏话、报警等负面情绪时，向用户回复结束语："实在抱歉打扰您了，我这边后台会将您的号码进行备注，后期不再给您打电话，那先不打扰您了，祝您生活愉快，再见"。
    8.把开头"亲爱的用户"、"亲爱的客户"等类似的招呼语过滤掉，把"如有问题，请随时联系我"、"期待你的回复"等过滤掉。
    9.如果用户回复内容为"@@quiet@@"，代表用户静音没有说话。请再次确认用户是否能听到你的声音，话术为："您好，能听到嘛？"、"您好，我这样讲解您听的清楚吗？"。如果连续三轮交互用户都为静音，则向用户说结束语："抱歉，这边信号不太好，我先不打扰您了，您先忙，祝您生活愉快，再见！"。
    
    用户当前的问题：{user_question}
    备选回复话术：{background_knowledge}
    对话记录如下：
    ===
    {conversation_history}
    ===
    对话记录结束
    
    根据用户当前的问题、对话记录和备选回复话术，请一步步思考，分析原因，接下来的解决方案是：
"""
class DetermineSolution(LLMAgent):
    """用户问题及疑议判断机器人"""

    def __init__(self, role, user_question, background_knowledge,  conversation_history):
        background_knowledge_str = ""
        if background_knowledge:
            background_knowledge_str = "\n===\n" + str(background_knowledge) + "\n===\n"


        self.prompt = default_template.format(role=role, user_question=user_question,
                                              background_knowledge=background_knowledge_str,
                                              conversation_history=conversation_history)
        super().__init__(self.prompt)
